package com.lanswon.qzsmk.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.lanswon.qzsmk.model.Personal;
import com.lanswon.qzsmk.vo.MakeCardQueryConditionVo;

@Repository
public interface PersonalMapper {
	
	
	/**
	 * 查询所有
	 * @return 异常数据的批次号
	 */
	List<Personal> queryAll();
	
	/**
	 * 批处理
	 * @param list
	 */
	void batchInsert(List<Personal> list);
	
	/**
	 * 保存
	 * @param record
	 * @return
	 */
    int savePersonal(Personal record);
    
    /**
     * 根据批次号获取个人信息，也可以获取改批次号的发卡量
     * @param applyBatchNo
     * @return
     */
    List<Personal> getPersonalByApplyBatchNo(String applyBatchNo);
    
    /**
     * 根据证件号码查询个人信息
     * @param paperNo
     * @return
     */
    Personal queryPersonalByPaperNo(@Param("paperType")String paperType,@Param("paperNo")String paperNo);
    
    /**
     * 通过市民卡号列表查询个人数据
     * @param citizenCardNos
     * @return
     */
    List<Personal> getPersonalByCitizenCardNoList(@Param("list")List<String> citizenCardNos);
    
    /**
     * 更新
     */
    int updateByPaperTypeAndPaperNo(Personal p); 
    
    /**
     * 更新
     */
    int updateByCustomerNO(Personal p);
    
    /**
     * 查询分页 根据申请批次号查询个人信息
     * @param mcv
     * @return
     */
    List<Personal> queryPersonalByApplybatchNo(MakeCardQueryConditionVo mcv);
    
    /**
     * 查询分页 根据任务编号查询个人信息
     * @param mcv
     * @return
     */
    List<Personal> queryPersonalByCardTaskNo (MakeCardQueryConditionVo mcv);
    
    /**
     *  根据任务编号查询个人信息(不分页)
     * @param mcv
     * @return
     */
    List<Personal> queryPersonalByCardTaskNo1 (String cardTask);
    
    
    /**
     * 批次里的人数
     * @param applyNo
     * @return
     */
    int queryPersonalCountByApplyBatchNo(String applyNo);
    
    /**
     * 任务里的人数
     * @param applyNo
     * @return
     */
    int queryPersonalCountByCardTaskNo(String cardTaskNo);
    
    /**
     * 查询个人信息
     * @param customerNo 客户编号
     * @return
     */
    Personal queryPersonalByCustomerNo(String customerNo);


    /**
     * 查询人数
     * @param paperType 证件类型
     * @param paperNo 证件号码
     * @return 数量
     */
    int queryPersonalCountByPaperNo(String paperType,String paperNo);
    
    /**
     * 根据卡号查询个人信息
     * @param citizenCardNo
     * @return
     */
    Personal queryPersonalBycitizenCardNo(String citizenCardNo);
    
    /**
     * 模糊查询
     * @param paperType
     * @param paperNo
     * @param mobile
     * @return
     */
    List<Personal> queryPersonalByCondition(@Param("paperType")String paperType, @Param("paperNo")String paperNo, @Param("mobile")String mobile);
}